﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;

namespace Jurassic_Island
{
    public class ENObjeto
    {
        private string nombre;
        private double coste;
        private string imagen;

        private CADObjeto cadObjeto = new CADObjeto();

        public ENObjeto()
        {
            nombre = "";
            coste = 0;
        }

        public ENObjeto(string nombre_obj, double coste_obj)
        {
            nombre = nombre_obj;
            coste = coste_obj;
        }

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        public double Coste
        {
            get { return coste; }
            set { coste = value; }
        }

        public string Imagen
        {
            get { return imagen; }
            set { imagen = value; }
        }


        //MÉTODOS
        //método que devuelve toda la tabla Objetos en un DataSet
        public DataSet ObtenerListaObjetos()
        {
            DataSet resultado = new DataSet();

            try
            {
                resultado = cadObjeto.ObtenerTablaObjetos();
            }

            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }

        //Actualiza la tabla Caminos llamando al método correspondiente de CADCaminos
        public bool ActualizarObjetos(DataSet dsObjetos)
        {
            bool resultado = false;

            try
            {
                resultado = cadObjeto.ActualizarObjetos(dsObjetos);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

        public DataSet BuscarListaObjetos(string filtro)
        {
            DataSet resultado = new DataSet();

            try
            {
                resultado = cadObjeto.ObtenerFitradoObjetos(filtro);
            }

            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }

        public bool ExisteObjeto(string nombre)
        {
            bool existe = false;

            try
            {
                existe = cadObjeto.ExisteObjeto(nombre);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return existe;
        }

        public ENObjeto ObtenerObjeto(string nombre)
        {
            ENObjeto objSalida = new ENObjeto();
            DataSet dsObjeto = new DataSet();
            //bool existe = false;

            try
            {
                dsObjeto = cadObjeto.ObtenerObjetoPorNombre(nombre);
                if (dsObjeto.Tables["Objetos"].Rows.Count > 0)
                {
                    DataRow drObjeto = dsObjeto.Tables["Objetos"].Rows[0];
                    objSalida.Nombre = drObjeto["nombre_obj"].ToString();
                    objSalida.Coste = double.Parse(drObjeto["coste_obj"].ToString());
                    objSalida.Imagen = drObjeto["imagen_obj"].ToString();
                }
                else
                {
                    throw new Exception("El objeto '" + nombre + "'no existe.");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return objSalida;
        }

        public DataSet ObtenerListaObjetosPorFinal(String final)
        {
            DataSet resultado = new DataSet();

            try
            {
                resultado = cadObjeto.ObtenerTablaObjetosPorFinal(final);
            }

            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }

    }
}